package com.auto.survey.activity.monitoring.dao

import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.auto.survey.activity.monitoring.entity.ctrlmeasure.LoopObservationPoint

@Dao
interface LoopObservationPointDao {

    /**
     * 插入单个闭合序列观测点（中间表记录）
     */
    @Insert
    suspend fun insert(point: LoopObservationPoint)

    /**
     * 批量插入闭合序列观测点（适合初始化A-B-A路径）
     */
    @Insert
    suspend fun insertAll(points: List<LoopObservationPoint>)

    /**
     * 根据闭合序列ID查询所有关联的观测点（含顺序）
     */
    @Query("SELECT * FROM LoopObservationPoint WHERE loopId = :loopId ORDER BY orderInLoop ASC")
    suspend fun getPointsByLoopId(loopId: Int): List<LoopObservationPoint>

    /**
     * 删除某个闭合序列下的所有观测点（用于重新创建路径）
     */
    @Query("DELETE FROM LoopObservationPoint WHERE loopId = :loopId")
    suspend fun deleteByLoopId(loopId: Int): Int

    /**
     * 检查某个测点是否已在闭合序列中（避免重复添加）
     */
    @Query("SELECT EXISTS(SELECT * FROM LoopObservationPoint WHERE loopId = :loopId AND pointId = :pointId)")
    suspend fun isPointInLoop(loopId: Int, pointId: Int): Boolean
}